home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / XML Utilities / Professional Programmer XSL IDE / Xselerator25.msi / Data.Cab / F44920_xsBSearch.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2001-07-01  |  1.9 KB  |  64 lines

  1. <xsl:stylesheet version="1.0"
  2.     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. >
  4.     
  5.     <xsl:output method="text"/>
  6.  
  7.  <xsl:variable name="theNumber" select="20001123"/>
  8.  
  9.  <xsl:template match="/">
  10.   <xsl:call-template name="binSearch">
  11.    <xsl:with-param name="argNumber" select="$theNumber"/>
  12.    <xsl:with-param name="nodeSet" select="dates/date/@value"/>
  13.    <xsl:with-param name="First" select="1"/>
  14.    <xsl:with-param name="Last" select="count(dates/date/@value)"/>
  15.   </xsl:call-template>
  16.  </xsl:template>
  17.  
  18.  <xsl:template name="binSearch">
  19.   <xsl:param name="argNumber" select="-Infinity"/>
  20.   <xsl:param name="nodeSet" select="/.."/>
  21.   <xsl:param name="First" select="Infinity"/>
  22.   <xsl:param name="Last" select="0"/>
  23.  
  24.   <xsl:choose>
  25.    <xsl:when test="$First > $Last">
  26.      -1
  27.    </xsl:when>
  28.    <xsl:otherwise>
  29.      <xsl:variable name="Mid" select="floor(($First + $Last) div 2)"/>
  30.  
  31.     <xsl:choose>
  32.       <xsl:when test="$argNumber = $nodeSet[$Mid]">
  33.        <xsl:value-of select="$Mid"/>
  34.       </xsl:when>
  35.       <xsl:when test="$argNumber < $nodeSet[$Mid]">
  36.        <xsl:call-template name="binSearch">
  37.            <xsl:with-param name="argNumber" select="$argNumber"/>
  38.            <xsl:with-param name="nodeSet" select="$nodeSet"/>
  39.            <xsl:with-param name="First" select="$First"/>
  40.            <xsl:with-param name="Last" select="$Mid - 1"/>
  41.        </xsl:call-template>
  42.       </xsl:when>
  43.       <xsl:when test="$argNumber > $nodeSet[$Mid]">
  44.        <xsl:call-template name="binSearch">
  45.            <xsl:with-param name="argNumber" select="$argNumber"/>
  46.            <xsl:with-param name="nodeSet" select="$nodeSet"/>
  47.            <xsl:with-param name="First" select="$Mid + 1"/>
  48.            <xsl:with-param name="Last" select="$Last"/>
  49.        </xsl:call-template>
  50.       </xsl:when>
  51.       <xsl:otherwise>
  52.         ERRROR
  53.       </xsl:otherwise>
  54.  
  55.     </xsl:choose>
  56.    </xsl:otherwise>
  57.  
  58.  
  59.  </xsl:choose>
  60. </xsl:template>
  61.  
  62.  
  63. </xsl:stylesheet>
  64.